Delegate
Delegate是iOS中一种常用的模式,在动画中也是一样,我们可以通过Delegate实现对动画完成过程中开始、结束时动作的控制
如下是动画的两个代理方法
func animationDidStart(anim: CAAnimation)
func animationDidStop(anim: CAAnimation, finished flag: Bool)
使用方法也很简单,只需设置代理即可
flyRight.delegate = self
动画中KVC的应用
CAAnimation类支持KVC编程,这意味着我们可以将他们作为Dictionary对待
flyRight.setValue(username.layer, forKey: "layer")
通过这行代码,我们可以让CAAnimation简单的Model带上其作用的Layer
由于我们设置了Key,我们就可以在delegate中由此判断传入的是哪一个CAAnimation对象
if let name = anim.valueForKey("name") as? String { if name == "form" {
//form field found
} }
返回的是AnyObject?类型,需要自行转换为希望的类型
let layer = anim.valueForKey("layer") as? CALayer anim.setValue(nil, forKey: "layer")
let pulse = CABasicAnimation(keyPath: "transform.scale") pulse.fromValue = 1.25
pulse.toValue = 1.0
pulse.duration = 0.25
layer?.addAnimation(pulse, forKey: nil)
将layer属性的值设为nil可以
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。